package com.blb.mapper;

import com.blb.entity.Product;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.blb.entity.ProductAttribute;
import com.blb.entity.WareMenu;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author HuaHao
 * @since 2019-11-16
 */
public interface ProductMapper extends BaseMapper<Product> {

    /**
     * 查询所有商品
     * @param pName
     * @return
     */
    List<Product> findAllProduct(String pName);
    /*添加商品*/
    void addProduct(Product product);
    /*修改商品信息*/
    void updateProduct(Product product);
    /*添加自定义属性*/
    void addProductAttributeList(@Param("productId") String productId, List<ProductAttribute> list);
    /*通过商品id查询自定义信息*/
    List<ProductAttribute> findProductAttributeList(String productId);
    /*修改商品的状态*/
    void updatePstatus(@Param("id") String id,@Param("status") String status);
    /*删除自定义属性*/
    void deleteAttributeList(String productId);

    List<Product> getMyCompanyProductInfo(@Param("ids") List<String> ids,@Param("companyId") String companyId,int start,int length);

    int count(@Param("ids") List<String> ids, @Param("companyId") String companyId);

    /**
     * 采购申请列表显示
     * @param start
     * @param length
     * @param companyId
     * @param orderId
     * @param pName
     * @param orderStatus
     * @param dealTime
     * @return
     * xuyuanxin
     */
    List<Product> findAllOrder(@Param("start") int start, @Param("length") int length,@Param("companyId") String companyId, @Param("orderId") String orderId, @Param("pName") String pName, @Param("orderStatus") String orderStatus, @Param("dealTime") String dealTime);

    /**
     * 计算采购申请列表显示条数
     * @param companyId
     * @param orderId
     * @param pName
     * @param orderStatus
     * @param dealTime
     * @return
     * xuyuanxin
     */
    int countOrder(@Param("companyId") String companyId, @Param("orderId") String orderId, @Param("pName") String pName, @Param("orderStatus") String orderStatus, @Param("dealTime") String dealTime);

    /**
     * 查看采购列表里订单详细信息
     * @param companyId
     * @param orderId
     * @return
     * xuyuanxin
     */
    Product findDetailOrder(@Param("companyId") String companyId, @Param("orderId") String orderId);

    /**
     * 查看采购列表里物流信息
     * @param companyId
     * @param orderId
     * @return
     * xuyuanxin
     */
    Product findLogistics(@Param("companyId") String companyId, @Param("orderId") String orderId);



    /**
     * lifeng
     * 根据商品编号查看商品所有信息
     * @param pNumber
     * @return
     */
    @Select("select * from t_product where p_number = #{pNumber}")
    Product getProductByPNumber(String pNumber);

    /**lifeng
     * 商品审核  下架状态
     * @param pNumber
     * @param aStatus
     * @param companyId
     */
    @Update("update t_product set a_status = #{aStatus} WHERE p_number = #{pNumber} and company_id = #{companyId}")
    void audit(String pNumber,String aStatus,String companyId);

    /**lifeng
     * 商品审核   上架状态
     * @param pNumber
     * @param aStatus
     * @param companyId
     */
    @Update("update t_product set a_status = #{aStatus},p_status = #{pStatus} WHERE p_number = #{pNumber} and company_id = #{companyId}")
    void audit2(String pNumber,String aStatus,String pStatus ,String companyId);
    /**
     * 待审核数量
     * @return
     */
    @Select("SELECT count(p_number) FROM t_product WHERE a_status = -1 and company_id=#{companyId}")
    int noAudit(String companyId);

    /**
     * 已审核数量
     * @return
     */
    @Select("SELECT count(p_number) FROM t_product WHERE a_status = 1 and company_id=#{companyId}")
    int yetAudit(String companyId);

    /**
     * lifeng
     * 未通过数量
     * @return
     */
    @Select("SELECT count(p_number) FROM t_product WHERE a_status = 0 and company_id=#{companyId}")
    int notAudit(String companyId);

    /**
     * 通过pNumber找到商品状态
     * @param pNumber
     * @param companyId
     * @return
     */
    @Select("select p_status from t_product where p_number = #{pNumber} and company_id=#{companyId}")
    String getpStatus(String pNumber,String companyId);



    /**
     * panglei
     * 根据当前登录的公司查找对应供应商的商品及分类
     * @param companyId
     * @return
     */
    List<Map<String,Object>> getPByCompany(String companyId,int start,int length);

    /**
     * panglei
     * 查找上面结果的总条数
     * @param companyId
     * @return
     */
    int countGetPByCompany(String companyId);
    /**
     * panglei
     * 根据点击的分类查找对应的商品及分类
     * @param enterprise
     * @return
     */
    List<Map<String,Object>> getPByEnterprise(String enterprise,int start,int length);

    /**
     * panglei
     * 查找上面结果的总条数
     * @param enterprise
     * @return
     */
    int countGetPByEnterprise(String enterprise);
    /**
     * panglei
     * 根据点击的供应商查找对应的商品及分类
     * @param companyId
     * @return
     */
    List<Map<String,Object>> getPBySupplier(String companyId,int start,int length);

    /**
     * panglei
     * 查找上面结果的总条数
     * @param companyId
     * @return
     */
    int countGetPBySupplier(String companyId);

    /**
     * panglei
     * 根据商品ID查库存
     * @param productId
     * @return
     */
    int getStockById(String productId);

    /**
     * panglei
     * 通过商品Id查找商品以及库存数量
     * @param productId
     * @return
     */
    Map<String,Object> getProductById(String productId);
    /**
     * 通过商品Id查找商品月销量
     * @param productId
     * @return
     */
    int monthSale(String productId);

    /**
     * panglei
     * 查找当前公司对应的所有供应商的商品种类，三级菜单
     * @return
     */
    List<WareMenu> getMenusByCompanyId(String companyId);
}
